home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1984-10-23 | 23.0 KB | 946 lines |
- 1 REM 20 SEPT 79 W/ SOUND/SCROLL/STROBE KEYBOARD
- 150 CLEAR ,&H8000:WIDTH 80
- 155 KEY 10,"":ON KEY (10) GOSUB 43000:KEY (10) ON
- 160 COLOR 7,0:CLS:SND=1:LOCATE ,,0
- 170 DEF FN A(X)= INT (X* RND (1))
- 175 GOSUB 50009:DEF SEG = AA:BLOAD "SCROLL1.ML",0
- 185 SCROLL%=0:MENU%= 2:COMMON MENU%
- 190 Y1=2:X1=2
- 195 GOSUB 60200:KEY OFF
- 197 GOSUB 42000
- 200 LOCATE 1,31:PRINT "C R I B B A G E":LOCATE 7,5
- 205 DIM P1(15),HH(4):FOR N= 1 TO 15:READ P1(N):NEXT
- 210 DATA 60,37,39,41,42,44,46,48,49,51,53,54,56,58,60
- 220 PRINT "+++ STANDBY - OPENING NEW DECK OF CARDS +++"
- 230 PRINT CHR$(11):GOSUB 60300:RANDOMIZE VAL(RIGHT$(TIME$,2))
- 235 FOR VA= 2 TO 13:GOSUB 60000:NEXT :VA= 1:GOSUB 60000
- 240 DIM D(52,4),I(52),W(5,4),M(6,4),T$(34),H(8,4)
- 250 DIM Y(6,4),C(4,4),V(15,7),Q(11,6),R(4,5),S(4),J(52)
- 500 REM SET DECK
- 530 DATA 1,2,3,4,5,6,0,1,2,3,5,4,6,0,1,2,3,6,4,5,0,1,2,4,5,3,6,0
- 540 DATA 1,2,4,6,3,5,0,1,2,5,6,3,4,0,1,3,4,5,2,6,0,1,3,4,6,2,5,0
- 550 DATA 1,3,5,6,2,4,0,1,4,5,6,2,3,0,2,3,4,5,1,6,0,2,3,4,6,1,5,0
- 560 DATA 2,3,5,6,1,4,0,2,4,5,6,1,3,0,3,4,5,6,1,2,0
- 570 RESTORE 530
- 580 FOR I= 1 TO 15:FOR J= 1 TO 7:READ V(I,J):NEXT J:NEXT I
- 600 REM DATA FOR FOUR CARD RUN W/ PAIRS Q(I,J)
- 620 DATA 1,1,1,2,3,9,1,1,2,2,3,12,1,1,2,3,3,12
- 630 DATA 1,1,2,3,4,8,1,2,2,2,3,9,1,2,2,3,3,12
- 640 DATA 1,2,2,3,4,8,1,2,3,3,3,9,1,2,3,3,4,8
- 650 DATA 1,2,3,4,4,8,1,2,3,4,5,5
- 670 REM DATA FOR THREE CARD RUN W/ PAIRS R(I,J)
- 690 DATA 1,1,2,3,6,1,2,2,3,6,1,2,3,3,6,1,2,3,4,4
- 710 REM DATA FOR THREE CARD RUN S(I)
- 730 DATA 1,2,3,3
- 750 REM PRESET
- 770 SC= 0:SP= 0:BS= 0:WP= 0:YC= 0:MC= 0:BH= 0
- 780 GP= 0:M= 0:C= 0:GC= 0:P= 0
- 790 GOTO 1030
- 1000 GOTO 150
- 1005 REM
- 1010 REM SHUFFLE//CUT CARDS
- 1020 REM
- 1030 LOCATE 10,5:GOSUB 60300
- 1040 PRINT "+++ STANDBY +++ SHUFFLING THE CARDS +++";
- 1050 PRINT CHR$(11):GOSUB 14500:GOSUB 17000
- 1060 LOCATE 12,8:GOSUB 60300
- 1070 INPUT "PLEASE CUT FOR THE DEAL (1-50) ";I:GOSUB 60300
- 1075 IF I< 1 THEN GOSUB 17000:GOTO 6000
- 1080 IF I= INT (I)AND I> 0 AND I< 51 THEN 1120
- 1090 GOSUB 17800
- 1100 PRINT "BE SERIOUS NOW - THERE ARE 52 CARDS";
- 1110 GOTO 1060
- 1120 I1= I:VA= D(I,4):ST= D(I,3):GOSUB 22200
- 1130 GOSUB 17200
- 1140 LOCATE Y1-1,X1:PRINT "YOURS";
- 1150 J= FN A(52- I1)+ I1
- 1160 IF J= 0 THEN J= FN A(52)+ 1
- 1170 IF J= I1 THEN 1150
- 1180 J1= J:VA= D(J,4):ST= D(J,3):GOSUB 22300
- 1190 GOSUB 17200:I= I1:J= J1
- 1200 LOCATE Y1-1,X1:PRINT "MINE";
- 1205 FOR TD=1 TO 1500:NEXT
- 1210 IF D(I,4)< D(J,4) THEN M= 1:GOTO 1250
- 1220 IF D(J,4)< D(I,4) THEN M= 0:GOTO 1250
- 1230 GOSUB 17000:PRINT "YOU SURE ARE LUCKY - CUT AGAIN";
- 1240 GOTO 1060
- 1250 LOCATE 7,5:PRINT STRING$(48," ");:LOCATE 10,5:PRINT STRING$(48," "):GOSUB 23000
- 1260 GOSUB 17000:ON M+ 1 GOTO 2050,2000
- 2000 REM
- 2010 REM START PLAY
- 2020 REM
- 2030 GOSUB 17800
- 2040 PRINT "YOU ARE DEALING";:GOTO 2070
- 2050 GOSUB 17800
- 2060 PRINT "I AM DEALING";
- 2070 M= 1- M:YY= 1- M
- 2080 FOR I= 1 TO 6:K= 2* I- YY:L= 2* I- M
- 2090 FOR J= 1 TO 4
- 2100 M(I,J)= D(K,J):REM COMPUTERS HAND
- 2110 Y(I,J)= D(L,J):REM PLAYERS HAND
- 2120 NEXT J
- 2130 M(I,0)= 0:Y(I,0)= 0
- 2140 NEXT I
- 2150 FOR B= 1 TO 6:ON M+ 1 GOTO 2160,2190
- 2160 ON B GOSUB 22000,22100,22200,22300,22400,22500
- 2170 ST= M(B,3):VA= M(B,4):CN= Y1:GOSUB 22600:REM GOSUB 17200FORCARD
- 2180 ON M+ 1 GOTO 2190,2230
- 2190 ST= Y(B,3):VA= Y(B,4)
- 2200 ON B GOSUB 20000,20100,20200,20300,20400,20500
- 2210 GOSUB 17200:LOCATE 9,X1+ 2:PRINT CHR$(B+48);
- 2220 ON M+ 1 GOTO 2230,2160
- 2230 NEXT B
- 2500 REM
- 2510 REM GET THE UP CARD
- 2520 REM
- 2530 UP= FN A(38)+ 8:V= 1
- 2540 FOR I= 1 TO 6
- 2550 IF Y(I,1)= D(UP,1) THEN V= 0
- 2560 IF M(I,1)= D(UP,1) THEN V= 0
- 2570 NEXT I:IF V= 0 THEN 2530
- 2580 FOR I= 1 TO 4:W(5,I)= D(UP,I):NEXT I
- 3000 REM
- 3010 REM COMPUTER EVALUATE HAND
- 3020 REM
- 3030 REM GOSUB 17000
- 3040 LOCATE 13,3:PRINT "STANDBY - I TAKE A WHILE TO SORT & DISCARD";
- 3045 TIME$="00:00:00"
- 3050 WP= 0:FOR CN= 1 TO 15:VA= CN:GOSUB 60000
- 3070 I1= V(CN,1):I2= V(CN,2):I3= V(CN,3):I4= V(CN,4)
- 3110 C= 0:GOSUB 30000:V(CN,7)= P:IF P> WP THEN WP= P
- 3120 NEXT CN:P= 0
- 3125 LOCATE 13,3:PRINT STRING$(43," ");:LOCATE 14,9:PRINT STRING$(20," ");
- 3130 REM
- 3140 REM FIND ALL HANDS W/ MAX SCORE IN WP
- 3150 REM
- 3160 J= 0:FOR I= 1 TO 15:IF V(I,7)< > WP THEN 3180
- 3170 J= J+ 1:I(J)= I
- 3180 NEXT I:IF J> 1 THEN 3260
- 3190 REM
- 3200 REM THIS IS BEST HAND
- 3210 REM
- 3220 BC= I(1):GOTO 4000
- 3230 REM
- 3240 REM NO SINGLE BEST HAND - SEARCH FOR KEY CARDS
- 3250 REM
- 3260 BH= 5:ZZ= 1:GOTO 3350
- 3270 BH= 8:ZZ= 2:GOTO 3350
- 3280 BH= 7:ZZ= 3:GOTO 3350
- 3290 BH= 11:ZZ= 4:GOTO 3350
- 3300 BH= 1:ZZ= 5:GOTO 3350
- 3310 REM
- 3320 REM RANDOMLY CHOOSE A HAND IF CMPTR REACHES HERE
- 3330 REM
- 3340 BC= FN A(J)+ 1:I(BC)= BC:GOTO 4000
- 3350 REM
- 3360 REM BEST HAND WILL BE WHICHEVER HAS THE MOST OF CARD BH
- 3370 REM
- 3380 WP= 0:FOR I= 1 TO 15:J(I)= 0:NEXT I
- 3390 FOR I= 1 TO J:FOR K= 1 TO 4:L= V(I(I),K)
- 3400 IF M(L,4)= BH THEN J(I)= J(I)+ 1
- 3410 NEXT K:IF J(I)> WP THEN WP= J(I)
- 3420 NEXT I
- 3430 K= 0:FOR I= 1 TO J:IF J(I)= WP THEN K= K+ 1:BC= I(I)
- 3440 NEXT I:IF K= 1 THEN 4000
- 3450 ON ZZ GOTO 3270,3280,3290,3300,3310
- 4000 REM
- 4001 REM PLAYER//COMPUTER DISCARDS
- 4002 REM
- 4010 GOSUB 17000
- 4030 GOSUB 22700:GOSUB 22700
- 4040 GOSUB 17000:FOR B= 1 TO 2:CALL SCROLL%(SCR%,POS1%,POS2%):NEXT B:GOSUB 60300
- 4050 I1= V(BC,5):I2= V(BC,6)
- 4060 GOSUB 17800:PRINT "YOUR DISCARDS PLEASE ";:LOCATE ,,1
- 4070 GOSUB 40000:I3=ASC(KB$):GOSUB 60300:PRINT CHR$ (I3)+ " ";:GOSUB 40000:I4=ASC(KB$):GOSUB 60300:PRINT CHR$ (I4);:LOCATE ,,0
- 4075 IF I3= 45 OR I4= 45 THEN 6000
- 4080 I3= I3- 48:I4= I4- 48
- 4090 IF I3< 1 OR I4< 1 THEN 4130
- 4100 IF I3< > INT (I3) OR I4< > INT (I4) THEN 4130
- 4110 IF I3= I4 THEN 4130
- 4120 IF I3< 7 AND I4< 7 THEN :GOTO 4200
- 4130 GOSUB 17800:PRINT "TRY A NUMBER FROM 1 TO 6";:GOTO 4060
- 4200 REM
- 4210 REM SET THE CRIB
- 4220 REM
- 4230 FOR J= 1 TO 4:C(1,J)= M(I1,J):C(2,J)= M(I2,J):C(3,J)= Y(I3,J):C(4,J)= Y(I4,J):NEXT J
- 4240 M(I1,0)= 1:M(I2,0)= 1:Y(I3,0)= 1:Y(I4,0)= 1
- 4400 REM
- 4410 REM REPACK PLAYERS HAND//SORT ASCENDING
- 4420 REM
- 4430 FOR K= 1 TO 4
- 4440 IF Y(K,0)= 0 THEN 4470
- 4450 FOR J= K+ 1 TO 6:FOR I= 0 TO 4:Y(J- 1,I)= Y(J,I):NEXT I:NEXT J
- 4460 Y(6,0)= 1:GOTO 4440
- 4470 NEXT K:Y(5,0)= 1
- 4480 V= 1:FOR I= 1 TO 3:IF Y(I,4)< = Y(I+ 1,4) THEN 4500
- 4490 FOR J= 0 TO 4:Y(0,J)= Y(I,J):Y(I,J)= Y(I+ 1,J):Y(I+ 1,J)= Y(0,J):NEXT J:V= 0
- 4500 NEXT I:IF V= 0 THEN 4480
- 4700 REM
- 4710 REM REDRAW CARDS
- 4720 REM
- 4725 LOCATE 9,30:PRINT" ";
- 4730 GOSUB 20500:FOR B= 1 TO 9:LOCATE Y1+ H1- 1,X1:PRINT SPC( W1);:CALL SCROLL%(SCR%,POS1%,POS2%):NEXT B
- 4740 GOSUB 20400:FOR B= 1 TO 9:LOCATE Y1+ H1- 1,X1:PRINT SPC( W1);:CALL SCROLL%(SCR%,POS1%,POS2%):NEXT B
- 4750 FOR B= 1 TO 4:ST= Y(B,3):VA= Y(B,4)
- 4760 ON B GOSUB 20000,20100,20200,20300:GOSUB 17200
- 4770 LOCATE 9,X1+ 2:PRINT CHR$(B+48):NEXT B:I3= 5:I4= 6
- 4780 REM
- 4790 REM GET UP CARD
- 4800 REM
- 4810 VA= D(UP,4):ST= D(UP,3):GOSUB 20600:GOSUB 17200
- 4820 LOCATE 9,49:PRINT "UP CARD";
- 4830 FOR I= 1 TO 4:W(5,I)= D(UP,I):NEXT I
- 4840 IF W(5,4)< > 11 THEN 5000
- 4850 GOSUB 17000:IF M= 0 THEN 4890
- 4860 PRINT "2 POINTS FOR ME";:SC= SC+ 2:GOSUB 15500
- 4870 IF SC> 120 THEN 5500
- 4880 GOTO 5000
- 4890 PRINT "2 POINTS FOR YOU";:SP= SP+ 2:GOSUB 15500
- 4900 IF SP> 120 THEN 5500
- 5000 REM
- 5010 REM PLAY CONTROL
- 5020 REM
- 5030 GOSUB 7000:LOCATE 6,35:PRINT SPC( 13);:LOCATE 7,35:PRINT SPC( 13);
- 5035 IF CP= 45 THEN 6000
- 5040 IF SC> 120 OR SP> 120 THEN 5500
- 5050 FOR B= 1 TO 4:VA= Y(B,4):ST= Y(B,3):ON B GOSUB 20000,20100,20200,20300
- 5060 GOSUB 17200:NEXT B
- 5070 GOSUB 17000:IF M= 0 THEN 5090
- 5080 PRINT "YOU SCORE FIRST";:XI= 1:GOTO 5100
- 5090 PRINT "I SCORE FIRST";:XI= 2
- 5100 GOSUB 10000
- 5110 IF SC> 120 OR SP> 120 THEN 5500
- 5120 GOSUB 23000
- 5130 GOSUB 17000:PRINT "++STANDBY++ SHUFFLING THE CARDS";
- 5140 GOSUB 14500:GOTO 1260
- 5500 REM
- 5510 REM SELECT WINNER//END
- 5520 REM
- 5530 GOSUB 17800:IF SC< 121 THEN 5550
- 5540 GOSUB 17000:PRINT "+++ I WIN +++";:GOTO 5570
- 5550 IF SP< 121 THEN 5570
- 5560 GOSUB 17000:PRINT "+++ YOU WIN +++";
- 5570 GOSUB 17000:PRINT "I HAVE "SC" POINTS";
- 5580 GOSUB 17000:PRINT "YOU HAVE"SP" POINTS";
- 5590 IF SC> 120 THEN SC= 121
- 5600 IF SP> 120 THEN SP= 121
- 5610 IF SC- SP< = 60 THEN 5630
- 5620 GOSUB 17800:PRINT "HA - HA - A DOUBLE SKUNK";:GOTO 5690
- 5630 IF SC- SP< = 30 THEN 5650
- 5640 GOSUB 17800:PRINT "HA - HA - I SKUNKED YOU";:GOTO 5690
- 5650 IF SP- SC< = 60 THEN 5670
- 5660 GOSUB 17800:PRINT "OOOOPS - I GOT DOUBLE SKUNKED";:GOTO 5690
- 5670 IF SP- SC< = 30 THEN 5690
- 5680 GOSUB 17800:PRINT "HMMMMM - I GOT SKUNKED";
- 5690 '
- 6000 REM
- 6010 REM PLAY AGAIN?
- 6020 REM
- 6030 GOSUB 17800:CALL SCROLL%(SCR%,POS1%,POS2%)
- 6040 PRINT "WOULD YOU LIKE TO PLAY AGAIN? Y/N ";:LOCATE ,,1
- 6050 GOSUB 40000:K= ASC(KB$):GOSUB 60300:IF K= 78 OR K= 89 THEN PRINT CHR$(K);
- 6060 IF K= 89 THEN CLS:RUN 1000
- 6070 IF K< > 78 THEN 6050
- 6090 LOCATE ,,0:CLS:LOCATE 16,18
- 6100 PRINT "G O O D B Y E";
- 6110 KEY (10) OFF
- 6120 CHAIN "BASMENU
- 7000 REM
- 7010 REM PLAY THE HAND
- 7020 REM
- 7030 GOSUB 15000
- 7040 YC= 0:MC= 0:C= 0:BS= 0:GC= 0:GP= 0
- 7050 IF M= 0 THEN 7830
- 7060 GOSUB 17000:PRINT "YOUR PLAY ";:LOCATE ,,1
- 7070 GOSUB 40000:CP= ASC(KB$):GOSUB 60300:C$= CHR$ (CP):IF CP= 71 OR CP = 13 THEN C$= "GO":CP=71
- 7075 IF CP= 45 THEN RETURN :REM ASK IF END
- 7080 PRINT C$;
- 7090 IF CP= 71 AND BS< 22 AND MC< 4 THEN 7120
- 7100 IF CP= 71 THEN 7700
- 7110 CP= CP- 48:IF CP> 0 AND CP< 7 THEN 7130
- 7120 GOSUB 17800:PRINT "INVALID PLAY - TRY AGAIN";:GOTO 7060
- 7130 IF CP> 4 THEN 7530
- 7140 IF Y(CP,0)= 1 THEN 7540
- 7150 IF BS+ Y(CP,2)> 31 THEN 7550
- 7160 BS= BS+ Y(CP,2):YC= YC+ 1:C= C+ 1:GOSUB 15100
- 7300 REM
- 7310 REM CHECK FOR 15/31 & PAIRS
- 7320 REM
- 7330 WS= BS:GOSUB 15300
- 7400 REM
- 7410 REM CHECK FOR RUNS//MOVE CARD
- 7420 REM
- 7430 GOSUB 16000:P= P+ PT:VA= Y(CP,4):ST= Y(CP,3)
- 7435 GOSUB 17100
- 7440 ON C GOSUB 21000,21100,21200,21300,21400,21500,21600,21700
- 7450 GOSUB 17200
- 7460 LOCATE 6,35:PRINT "SUM ="BS" ";:REM
- 7470 LOCATE 7,35:PRINT "POINTS ="P" ";
- 7480 SP= SP+ P:IF P> 0 THEN GOSUB 15500
- 7490 IF SP> 120 THEN RETURN
- 7500 IF BS< > 31 THEN 7700
- 7510 GP= 0:C= 0:BS= 0:GC= 0
- 7520 GOSUB 17700:GOTO 7700
- 7530 GOSUB 17800:PRINT "YOU DISCARDED THAT CARD EARLIER";:GOTO 7060
- 7540 GOSUB 17800:PRINT "YOU ALREADY PLAYED THIS CARD";:GOTO 7060
- 7550 GOSUB 17800:PRINT "WHOOPS - THAT IS MORE THAN 31";:GOTO 7060
- 7700 REM
- 7710 REM CHECK GO STATUS FROM PLAYER
- 7720 REM
- 7730 IF C$= "GO"AND GC= 1 THEN 8880
- 7740 IF C$= "GO" THEN GP= 1:C$= ""
- 7750 IF YC> 3 THEN GP= 1
- 7760 IF GC= 0 THEN 7830
- 7770 IF GP= 0 AND GC= 1 THEN 7060
- 7780 GOTO 8880
- 7800 REM
- 7810 REM COMPUTERS PLAY
- 7820 REM
- 7830 IF YC+ MC> 7 THEN 8880
- 7840 IF GC= 1 THEN 8800
- 7850 K= 0:WP= 0:WC= C
- 7860 FOR I= 0 TO 37:I(I)= 0:NEXT I
- 7870 K= K+ 1:IF K> 6 THEN 8210
- 7880 CC= V(BC,K)
- 7890 IF M(CC,0)= 1 THEN 7870
- 7900 WS= BS+ M(CC,2)
- 7910 IF WS> 31 THEN 7870
- 7920 IF M+ C= 1 AND M(CC,4)= 5 THEN 7870
- 7930 I(K+ 30)= CC
- 8000 REM
- 8010 REM CHECK FOR 15/31 & PAIRS
- 8020 REM
- 8030 C= WC+ 1:P= 0:GOSUB 15200:GOSUB 15300
- 8100 REM
- 8110 REM CHECK FOR RUNS
- 8120 REM
- 8130 GOSUB 16000:P= P+ PT:IF P> WP THEN WP= P
- 8140 I(K)= WP
- 8150 FOR L= 0 TO 8
- 8160 IF H(L,0)< > 2 THEN 8190
- 8170 H(L,0)= 0:H(L,1)= 0:H(L,2)= 0:H(L,3)= 0:H(L,4)= 0
- 8180 L= 8
- 8190 NEXT L
- 8200 GOTO 7870
- 8210 WP= 0
- 8220 FOR K= 1 TO 6
- 8230 IF WP< I(K) THEN WP= I(K):CC= I(K+ 30)
- 8240 NEXT K
- 8250 IF CC= 0 THEN 8530
- 8260 IF M(CC,0)= 1 THEN 8530
- 8270 BS= BS+ M(CC,2)
- 8280 C= WC+ 1:GOSUB 15200:GOTO 8620
- 8290 GOSUB 17000:PRINT "GO";:GC= 1
- 8300 C= WC:WP= 0:IF GP= 0 THEN 7060
- 8410 GOTO 8800
- 8500 REM
- 8510 REM GET CARD NO POINT VALUE
- 8520 REM
- 8530 K= 0:WP= 0
- 8540 K= K+ 1:IF K> 6 THEN C= WC:GOTO 8290
- 8550 IF M(K,0)= 1 THEN 8540
- 8560 WS= BS+ M(CC,2)
- 8570 IF WS> 31 THEN 8540
- 8580 CC= K:C= WC+ 1
- 8590 GOSUB 15200:GOSUB 15300:GOSUB 16000:WP= WP+ P+ PT
- 8600 WS= BS+ M(CC,2):IF WS> 31 THEN 8290
- 8610 BS= WS
- 8620 MC= MC+ 1:M(CC,0)= 1
- 8630 VA= M(CC,4):ST= M(CC,3)
- 8635 GOSUB 22700
- 8640 ON C GOSUB 21000,21100,21200,21300,21400,21500,21600,21700
- 8650 GOSUB 17200
- 8660 LOCATE 6,35:PRINT "SUM ="BS" ":REM
- 8670 LOCATE 7,35:PRINT "POINTS ="WP" "
- 8680 SC= SC+ WP:GOSUB 15500
- 8690 IF SC> 120 THEN RETURN
- 8700 IF BS< > 31 THEN 8800
- 8710 GP= 0:GC= 0:C= 0:BS= 0
- 8720 GOSUB 17700
- 8800 REM
- 8810 REM CHECK GO STATUS FROM COMPUTER
- 8820 REM
- 8830 IF GP AND GC= 1 THEN 8940
- 8840 IF MC> 3 THEN GC= 1
- 8850 IF GP= 0 THEN 7060
- 8860 IF GC= 0 AND GP= 1 THEN 7830
- 8870 GOTO 8940
- 8880 GOSUB 9200
- 8890 IF SP> 120 THEN RETURN
- 8900 IF YC+ MC> 7 THEN RETURN
- 8910 IF MC> 3 THEN GC= 1
- 8920 IF YC> 3 THEN GP= 1
- 8930 ON GC+ 1 GOTO 7830,7060
- 8940 GOSUB 9400
- 8950 IF SC> 120 THEN RETURN
- 8960 IF MC+ YC> 7 THEN RETURN
- 8970 IF YC> 3 THEN GP= 1
- 8980 IF MC> 3 THEN GC= 1
- 8990 ON GP+ 1 GOTO 7060,7830
- 9200 REM
- 9210 REM PLAYERS LAST CARD
- 9220 REM
- 9230 GOSUB 17000
- 9240 ON FN A(3)+ 1 GOTO 9250,9260,9270
- 9250 PRINT "YOU CAN HAVE 1 POINT FOR LAST CARD";:GOTO 9280
- 9260 PRINT "I'LL GIVE YOU 1 POINT FOR LAST CARD";:GOTO 9280
- 9270 PRINT "YOU GET 1 POINT FOR LAST CARD";
- 9280 SP= SP+ 1:GOSUB 15500:GOSUB 15000
- 9290 GP= 0:C= 0:GC= 0:BS= 0:GOSUB 17700:RETURN
- 9400 REM
- 9410 REM COMPUTERS LAST CARD
- 9420 REM
- 9430 GOSUB 17000
- 9440 ON FN A(3)+ 1 GOTO 9450,9460,9470
- 9450 PRINT "I'LL TAKE 1 POINT FOR LAST CARD";:GOTO 9480
- 9460 PRINT "1 POINT FOR ME FOR LAST CARD";:GOTO 9480
- 9470 PRINT "I GET 1 POINT FOR LAST CARD";
- 9480 SC= SC+ 1:GOSUB 15500:GOSUB 15000
- 9490 GP= 0:C= 0:GC= 0:BS= 0:GOSUB 17700:RETURN
- 10000 REM
- 10010 REM SCORE THE HANDS//PLAYER AND COMPUTER
- 10020 REM
- 10050 IF XI< > 1 THEN 10250
- 10060 K= 1:FOR I= 1 TO 6
- 10070 IF I= I3 THEN 10100
- 10080 IF I= I4 THEN 10100
- 10090 FOR J= 1 TO 4:W(K,J)= Y(I,J):NEXT J:K= K+ 1
- 10100 NEXT I
- 10110 FOR J= 1 TO 4:W(5,J)= D(UP,J):NEXT J
- 10120 C= 0:GOSUB 11000
- 10130 GOSUB 17000
- 10140 GOSUB 17800:PRINT "HOW MANY POINTS DO YOU HAVE? ";:INPUT;WP:GOSUB 60300
- 10150 WP= INT (ABS (WP)):IF WP= 19 THEN WP= 0
- 10160 D= P- WP:IF D= > 0 THEN 10190
- 10170 GOSUB 17800:PRINT "YOU DON'T HAVE "WP;"POINTS THERE!";
- 10180 GOTO 10140
- 10190 SP= SP+ WP:GOSUB 15500:IF SP> 120 THEN RETURN
- 10200 IF D= 0 THEN 10240
- 10210 SC= SC+ D:GOSUB 15500:GOSUB 17800
- 10220 PRINT "MUGGINS FOR"D"POINTS - THANKS";
- 10230 IF SC> 120 THEN RETURN
- 10240 ON XI GOTO 10250,10340,10470
- 10250 FOR K= 1 TO 4:L= V(BC,K):FOR J= 1 TO 4:W(K,J)= M(L,J):NEXT J:NEXT K
- 10260 GOSUB 17000:PRINT "MY CARDS ARE :";
- 10270 FOR K= 1 TO 4:VA= W(K,4):ST= W(K,3)
- 10280 ON K GOSUB 21000,21100,21200,21300
- 10290 GOSUB 17200:NEXT K
- 10300 FOR J= 1 TO 4:W(5,J)= D(UP,J):NEXT J
- 10310 C= 0:GOSUB 11000:SC= SC+ P:GOSUB 15500:IF SC> 120 THEN RETURN
- 10320 GOSUB 17000:PRINT "I HAVE "P" POINTS IN MY HAND";
- 10330 ON XI GOTO 10340,10060
- 10340 GOSUB 17000:PRINT "THE CRIB CARDS ARE :";
- 10350 FOR K= 1 TO 4:VA= C(K,4):ST= C(K,3)
- 10360 ON K GOSUB 22000,22100,22200,22300
- 10370 GOSUB 17200:NEXT K
- 10380 FOR I= 1 TO 4:FOR J= 1 TO 4:W(I,J)= C(I,J):NEXT J:NEXT I
- 10390 C= 1
- 10400 FOR J= 1 TO 4:W(5,J)= D(UP,J):NEXT J
- 10410 GOSUB 11000
- 10420 ON XI GOTO 10430,10460
- 10430 GOSUB 17000:PRINT "I HAVE "P" POINTS IN THE CRIB";
- 10440 SC= SC+ P:GOSUB 15500:IF SC> 120 THEN RETURN
- 10450 GOTO 10470
- 10460 XI= 3:GOTO 10130
- 10470 GOSUB 17000:PRINT "I HAVE A TOTAL SCORE OF"SC"POINTS";
- 10480 GOSUB 17800:PRINT "YOUR TOTAL SCORE IS"SP"POINTS";
- 10490 GOSUB 60300:RETURN
- 11000 REM
- 11010 REM SCORE 5 CARD HAND PLAYER//COMPUTER//CRIB
- 11020 REM
- 11030 REM CHECK FOR JACK SAME SUIT AS UP CARD
- 11040 REM EXCEPT FOR CRIB
- 11050 REM
- 11060 P= 0:IF C= 1 THEN 11100
- 11070 FOR I= 1 TO 4
- 11080 IF W(I,4)= 11 AND W(I,3)= W(5,3) THEN P= P+ 1
- 11090 NEXT I
- 11100 REM
- 11110 REM CHECK FOR 4 OR 5 CARD FLUSH
- 11120 REM
- 11130 FOR I= 1 TO 3
- 11140 IF W(I,3)< > W(I+ 1,3) THEN 11240
- 11150 NEXT I
- 11160 REM
- 11170 REM CRIB SCORES ONLY FOR 5 CARD FLUSH
- 11180 REM
- 11190 IF C< > 0 THEN 11220
- 11200 P= P+ 4:IF W(4,3)< > W(5,3) THEN 11240
- 11210 P= P+ 1:GOTO 11240
- 11220 IF W(4,3)< > W(5,3) THEN 11240
- 11230 P= P+ 5
- 11240 REM
- 11250 REM CHECK FOR 2 CARD SUMS OF 15
- 11260 REM
- 11270 FOR I= 1 TO 4:FOR J= I+ 1 TO 5
- 11280 IF W(I,2)+ W(J,2)= 15 THEN P= P+ 2
- 11290 NEXT J:NEXT I
- 11300 REM
- 11310 REM CHECK FOR 3 CARD SUMS OF 15
- 11320 REM
- 11330 FOR I= 1 TO 3:FOR J= I+ 1 TO 4:FOR K= J+ 1 TO 5
- 11340 IF W(I,2)+ W(J,2)+ W(K,2)= 15 THEN P= P+ 2
- 11350 NEXT K:NEXT J:NEXT I
- 11360 REM
- 11370 REM CHECK FOR 4 CARD SUMS OF 15
- 11380 REM
- 11390 FOR I= 1 TO 2:FOR J= I+ 1 TO 3:FOR K= J+ 1 TO 4:FOR L= K+ 1 TO 5
- 11400 IF W(I,2)+ W(J,2)+ W(K,2)+ W(L,2)= 15 THEN P= P+ 2
- 11410 NEXT L:NEXT K:NEXT J:NEXT I
- 11420 REM
- 11430 REM CHECK FOR 5 CARD SUM OF 15
- 11440 REM
- 11450 S= 0:FOR I= 1 TO 5:S= S+ W(I,2):NEXT I
- 11460 IF S= 15 THEN P= P+ 2
- 11470 REM
- 11480 REM CHECK FOR PAIRS//3 AND 4 A KIND
- 11490 REM
- 11500 FOR I= 1 TO 4:FOR J= I+ 1 TO 5
- 11510 IF W(I,4)= W(J,4) THEN P= P+ 2
- 11520 NEXT J:NEXT I
- 11530 REM
- 11540 REM SORT CARDS INTO ASCENDING SEQUENCE
- 11550 REM
- 11560 V= 1:FOR I= 1 TO 4
- 11570 IF W(I,4)< = W(I+ 1,4) THEN 11610
- 11580 FOR J= 0 TO 4
- 11590 W(0,J)= W(I,J):W(I,J)= W(I+ 1,J):W(I+ 1,J)= W(0,J)
- 11600 NEXT J:V= 0
- 11610 NEXT I:IF V= 0 THEN 11560
- 11620 REM
- 11630 REM CHECK//SCORE FOR 5 CARD RUN
- 11640 REM
- 11650 GOSUB 14000:D= W(1,4)- Q(1,1)
- 11660 FOR I= 1 TO 11:FOR J= 1 TO 5:Q(I,J)= Q(I,J)+ D:NEXT J:NEXT I
- 11670 PT= 0:FOR I= 1 TO 11:V= 1:FOR J= 1 TO 5
- 11680 IF W(J,4)< > Q(I,J) THEN J= 5:V= 0
- 11690 NEXT J:IF V= 1 THEN PT= PT+ Q(I,6)
- 11700 NEXT I:P= P+ PT:IF PT> 0 THEN RETURN
- 11710 REM
- 11720 REM CHECK//SCORE FOR 4 CARD RUN
- 11730 REM
- 11740 PT= 0:FOR L= 1 TO 2:GOSUB 14060:D= W(L,4)- R(1,1)
- 11750 FOR I= 1 TO 4:FOR J= 1 TO 4:R(I,J)= R(I,J)+ D:NEXT J:NEXT I
- 11760 FOR I= 1 TO 4:V= 1:FOR K= 1 TO 4:IF W(K+ L- 1,4)< > R(I,K) THEN K= 4:V= 0
- 11770 NEXT K:IF V= 1 THEN PT= PT+ R(I,5)
- 11780 NEXT I:NEXT L:P= P+ PT:IF PT> 0 THEN RETURN
- 11790 REM
- 11800 REM CHECK//SCORE FOR 3 CARD RUN
- 11810 REM
- 11820 PT= 0:FOR L= 1 TO 3:GOSUB 14120:D= W(L,4)- S(1)
- 11830 FOR I= 1 TO 3:S(I)= S(I)+ D:NEXT I
- 11840 V= 1:FOR I= 1 TO 3:IF W(L+ I- 1,4)< > S(I) THEN I= 3:V= 0
- 11850 NEXT I:IF V= 1 THEN PT= PT+ S(4)
- 11860 NEXT L:P= P+ PT:RETURN
- 14000 REM
- 14010 REM READ Q(I,J)
- 14020 REM
- 14030 RESTORE 620
- 14040 FOR I= 1 TO 11:FOR J= 1 TO 6:READ Q(I,J):NEXT J:NEXT I
- 14050 RETURN
- 14060 REM
- 14070 REM READ R(I,J)
- 14080 REM
- 14090 RESTORE 690
- 14100 FOR I= 1 TO 4:FOR J= 1 TO 5:READ R(I,J):NEXT J:NEXT I
- 14110 RETURN
- 14120 REM
- 14130 REM READ S(I)
- 14140 REM
- 14150 RESTORE 730
- 14160 FOR I= 1 TO 4:READ S(I):NEXT I
- 14170 RETURN
- 14500 REM
- 14510 REM SHUFFLE DECK
- 14520 REM
- 14530 FOR I= 1 TO 52:I(I)= 0:NEXT I
- 14540 FOR I= 1 TO 52
- 14550 J= FN A(52)+ 1:IF I(J)= 1 THEN 14550
- 14555 LOCATE 14,2+ J:PRINT "*";
- 14560 D(I,1)= J:D(I,3)= INT ((J- 1)/ 13)+ 1
- 14565 ON D(I,3) GOTO 14570,14572,14574,14576
- 14570 D(I,4)= J:D(I,2)= D(I,4):GOTO 14580
- 14572 D(I,4)= J- 13:D(I,2)= D(I,4):GOTO 14580
- 14574 D(I,4)= J- 26:D(I,2)= D(I,4):GOTO 14580
- 14576 D(I,4)= J- 39:D(I,2)= D(I,4):GOTO 14580
- 14580 IF D(I,2)> 10 THEN D(I,2)= 10
- 14590 D(I,0)= 0:I(J)= 1:NEXT I
- 14600 FOR I= 1 TO 15:V(I,7)= 0:NEXT I
- 14605 LOCATE 14,2:PRINT STRING$(54," ");
- 14610 RETURN
- 15000 REM
- 15010 REM CLEAR PLAYING MATRIX
- 15020 REM
- 15030 FOR I= 0 TO 8:FOR J= 0 TO 4:H(I,J)= 0:NEXT J:NEXT I
- 15040 RETURN
- 15100 REM
- 15110 REM PLAYERS CARD INTO PLAYING FIELD
- 15120 REM
- 15130 FOR J= 1 TO 4:H(C,J)= Y(CP,J):NEXT J:Y(CP,0)= 1
- 15140 RETURN
- 15200 REM
- 15210 REM COMPUTERS CARD INTO PLAYING FIELD
- 15220 REM
- 15230 FOR J= 1 TO 4:H(C,J)= M(CC,J):NEXT J
- 15240 RETURN
- 15300 REM
- 15310 REM CHECK FOR 15/31 & PAIRS
- 15320 REM
- 15330 P= 0
- 15340 IF C< 2 THEN RETURN
- 15350 IF H(C,4)= H(C- 1,4) THEN P= P+ 2
- 15360 IF P< 2 OR C< 3 THEN 15400
- 15370 IF H(C,4)= H(C- 2,4) THEN P= P+ 4
- 15380 IF P< 6 OR C< 4 THEN 15400
- 15390 IF H(C,4)= H(C- 3,4) THEN P= P+ 6
- 15400 IF WS= 15 THEN P= P+ 2
- 15410 IF WS= 31 THEN P= P+ 2
- 15420 RETURN
- 15500 REM
- 15510 REM PLOT SCORE
- 15520 REM
- 15530 LOCATE 4,61:PRINT "YOU HAVE";SP;
- 15535 SCOR=SP:XS=60:YS=5:GOSUB 15700
- 15540 LOCATE 7,62:PRINT "PC HAS ";SC;
- 15545 SCOR=SC:XS=60:YS=6:GOSUB 15700
- 15550 RETURN
- 15700 LOCATE YS,XS:IF SCOR>30 THEN PRINT"POINTPOINTPOINT"; ELSE GOTO 15800
- 15710 XS=XS+4:LOCATE YS,XS:IF SCOR>60 THEN PRINT"POINTPOINTPOINT"; ELSE GOTO 15800
- 15720 XS=XS+4:LOCATE YS,XS:IF SCOR>90 THEN PRINT"POINTPOINTPOINT"; ELSE GOTO 15800
- 15730 XS=XS+4:LOCATE YS,XS:IF SCOR>120 THEN PRINT"POINTPOINTPOINT"; ELSE GOTO 15800
- 15800 PRINT STRING$((SCOR/30-INT(SCOR/30))*3,"POINT");:
- 15810 IF (SCOR/10 -INT(SCOR/10)*10 >4) THEN PRINT"OFF";
- 15820 RETURN
- 15950 RETURN
- 16000 REM
- 16010 REM MID/END PAIR CHECK FOR RUNS
- 16020 REM
- 16030 PT= 0
- 16040 IF C< 3 THEN RETURN
- 16050 IF H(C,4)= H(C- 1,4) THEN RETURN
- 16060 IF H(C,4)= H(C- 2,4) THEN RETURN
- 16070 IF H(C- 1,4)= H(C- 2,4) THEN RETURN
- 16080 REM
- 16090 REM LOW END SET
- 16100 REM
- 16110 L= 1:FOR J= C TO 2 STEP - 1:FOR K= J- 1 TO 1 STEP - 1
- 16120 IF H(J,4)= H(K,4)AND K> L THEN L= K
- 16130 NEXT K:NEXT J
- 16140 REM
- 16150 REM CHECK RUNS
- 16160 REM
- 16170 IF C- L< 2 THEN RETURN
- 16180 LO= 99:HI= 0:SUM= 0
- 16190 FOR K= L TO C
- 16200 IF H(K,4)< LO THEN LO= H(K,4)
- 16210 IF H(K,4)> HI THEN HI= H(K,4)
- 16220 SUM= SUM+ H(K,4)
- 16230 NEXT K
- 16240 REM
- 16250 REM SCORE RUNS
- 16260 REM
- 16270 MID= (LO+ HI)/ 2
- 16280 CK= (C- L+ 1)* MID
- 16290 IF CK= SUM THEN PT= C- L+ 1
- 16300 IF PT< 3 THEN PT= 0
- 16310 IF (HI- LO+ 1)/ (C- L+ 1)< > 1 THEN PT= 0
- 16320 IF PT= 0 THEN L= L+ 1:GOTO 16170
- 16330 RETURN
- 17000 REM
- 17010 REM SCROLL CONTROL FOR PRINT STATEMENTS
- 17020 REM
- 17030 SCR%=6*256+7
- 17035 X1=44:Y1=19:W1=33:H1=5:GOSUB 64000
- 17050 GOSUB 17800
- 17060 RETURN
- 17100 REM
- 17110 REM ERASE PLAYED CARD - PLAYER FIELD
- 17120 REM
- 17130 ON CP GOSUB 20000,20100,20200,20300,20400,20500
- 17140 LOCATE Y1+ H1- 1,X1:PRINT SPC( W1)
- 17145 GOSUB 64000
- 17150 FOR XX= 2 TO 9:CALL SCROLL%(SCR%,POS1%,POS2%):NEXT XX:GOSUB 60100:RETURN
- 17200 REM
- 17210 REM CARD GRAPHICS
- 17220 REM
- 17230 FOR I= 0 TO 34:T$(I)= " ":NEXT :REM
- 17240 IF ST= 3 THEN U$= CHR$(5):GOTO 17280:REM
- 17250 IF ST= 4 THEN U$= CHR$(3):GOTO 17280:REM
- 17260 IF ST= 2 THEN U$= CHR$(4):GOTO 17280:REM
- 17270 IF ST= 1 THEN U$= CHR$(6):REM
- 17280 REM PLOT 6,56
- 17290 ON VA GOTO 17480,17470,17460,17450,17430,17410,17400,17390,17380,17360,17320,17310
- 17300 T$(17)= "K":GOTO 17330
- 17310 T$(17)= "Q":GOTO 17330
- 17320 T$(17)= "J"
- 17330 T$(8)= U$:T$(7)= U$:T$(6)= U$:T$(11)= U$:T$(16)= U$
- 17340 T$(21)= U$:T$(26)= U$:T$(27)= U$:T$(28)= U$:T$(23)= U$
- 17350 T$(18)= U$:T$(13)= U$:GOTO 17490
- 17360 T$(6)= U$:T$(8)= U$:T$(16)= U$:T$(18)= U$:T$(26)= U$
- 17370 T$(28)= U$:GOTO 17450
- 17380 T$(7)= U$:T$(27)= U$:GOTO 17400
- 17390 T$(12)= U$:T$(22)= U$:GOTO 17410
- 17400 T$(17)= U$
- 17410 T$(6)= U$:T$(8)= U$:T$(16)= U$:T$(18)= U$:T$(26)= U$
- 17420 T$(28)= U$:GOTO 17490
- 17430 T$(6)= U$:T$(8)= U$:T$(17)= U$:T$(26)= U$:T$(28)= U$
- 17440 GOTO 17490
- 17450 T$(11)= U$:T$(13)= U$:T$(21)= U$:T$(23)= U$:GOTO 17490
- 17460 T$(7)= U$:T$(17)= U$:T$(27)= U$:GOTO 17490
- 17470 T$(12)= U$:T$(22)= U$:GOTO 17490
- 17480 T$(17)= U$
- 17490 IF VA> 1 AND VA< 11 THEN T$= RIGHT$ (STR$ (VA),1)
- 17500 IF VA= 11 THEN T$= "J"
- 17510 IF VA= 12 THEN T$= "Q"
- 17520 IF VA= 13 THEN T$= "K"
- 17530 IF VA= 1 THEN T$= "A"
- 17540 IF ST= 2 OR ST= 4 THEN T$= ""+ T$:REM
- 17550 IF VA< > 10 THEN 17580
- 17560 T$= LEFT$ (U$,2):M$= "0":N$= "1":IF ST= 2 OR ST= 4 THEN T$= ""+ T$:REM
- 17570 T$(0)= "1":T$(1)= "0":T$(33)= "1":T$(34)= "0":GOTO 17590
- 17580 T$(0)= T$:T$(34)= T$
- 17590 CN= Y1+ H1- 1
- 17595 COLOR 0,7
- 17600 FOR I= 0 TO 30 STEP 5:CALL SCROLL%(SCR%,POS1%,POS2%):LOCATE CN+1,X1:FOR J= 0 TO 4:PRINT T$(I+ J);:NEXT
- 17610 NEXT I
- 17615 COLOR 7,0
- 17630 GOSUB 60000:RETURN
- 17700 REM
- 17710 REM ERASE CARDS - BOARD FIELD
- 17720 REM
- 17730 FOR B= 1 TO 8
- 17735 DEF SEG =0:IF ((PEEK(&H410) AND &H30)<> &H30) THEN DEF SEG = &HB800 ELSE DEF SEG = &HB000:REM CHECK WHICH DISPLAY
- 17740 ON B GOSUB 21000,21100,21200,21300,21400,21500,21600,21700
- 17745 IF PEEK (1428 + B*14)= 32 THEN 17770
- 17750 LOCATE Y1+ H1- 2,X1:PRINT SPC( W1+1);
- 17755 DEF SEG =AA
- 17760 FOR XX= 1 TO 7:CALL SCROLL%(SCR%,POS1%,POS2%):NEXT XX:GOSUB 60100
- 17770 NEXT B:DEF SEG=AA:RETURN
- 17800 REM
- 17810 REM CALL AND PLOT
- 17820 REM
- 17830 CALL SCROLL%(SCR%,POS1%,POS2%):GOSUB 60300:LOCATE Y1+ H1,X1:RETURN
- 20000 REM
- 20001 REM PLAYER CARD 1
- 20002 REM
- 20010 X1= 2:Y1= 2:W1= 5:H1= 6:GOSUB 64000
- 20020 RETURN
- 20100 REM
- 20101 REM PLAYER CARD 2
- 20102 REM
- 20110 X1= 9:Y1= 2:W1= 5:H1= 6:GOSUB 64000
- 20120 RETURN
- 20200 REM
- 20201 REM PLAYER CARD 3
- 20202 REM
- 20210 X1= 16:Y1= 2:W1= 5:H1= 6:GOSUB 64000
- 20220 RETURN
- 20300 REM
- 20301 REM PLAYER CARD 4
- 20302 REM
- 20310 X1= 23:Y1= 2:W1= 5:H1= 6:GOSUB 64000
- 20320 RETURN
- 20400 REM
- 20401 REM PLAYER CARD 5
- 20402 REM
- 20410 X1= 30:Y1= 2:W1= 5:H1= 6:GOSUB 64000
- 20420 RETURN
- 20500 REM
- 20501 REM PLAYER CARD 6
- 20502 REM
- 20510 X1= 37:Y1= 2:W1= 4:H1= 6:GOSUB 64000
- 20520 RETURN
- 20600 REM
- 20601 REM UP CARD
- 20602 REM
- 20610 X1= 50:Y1= 2:W1= 4:H1= 6:GOSUB 64000
- 20620 RETURN
- 21000 REM
- 21001 REM COMPUTER CARD 1//BOARD CARD 1
- 21002 REM
- 21010 X1= 2:Y1= 10:W1= 4:H1= 6:GOSUB 64000
- 21020 RETURN
- 21100 REM
- 21101 REM COMPUTER CARD 2//BOARD CARD 2
- 21102 REM
- 21110 X1= 9:Y1= 10:W1= 4:H1= 6:GOSUB 64000
- 21120 RETURN
- 21200 REM
- 21201 REM COMPUTER CARD 3//BOARD CARD 3
- 21202 REM
- 21210 X1= 16:Y1= 10:W1= 4:H1= 6:GOSUB 64000
- 21220 RETURN
- 21300 REM
- 21301 REM COMPUTER CARD 4//BOARD CARD 4
- 21302 REM
- 21310 X1= 23:Y1= 10:W1= 4:H1= 6:GOSUB 64000
- 21320 RETURN
- 21400 REM
- 21401 REM COMPUTER CARD 5//BOARD CARD 5
- 21402 REM
- 21410 X1= 30:Y1= 10:W1= 4:H1= 6:GOSUB 64000
- 21420 RETURN
- 21500 REM
- 21501 REM COMPUTER CARD 6//BOARD CARD 6
- 21502 REM
- 21510 X1= 37:Y1= 10:W1= 4:H1= 6:GOSUB 64000
- 21520 RETURN
- 21600 REM
- 21601 REM BOARD CARD 7
- 21602 REM
- 21610 X1= 44:Y1= 10:W1= 4:H1= 6:GOSUB 64000
- 21620 RETURN
- 21700 REM
- 21701 REM BOARD CARD 8
- 21702 REM
- 21710 X1= 51:Y1= 10:W1= 4:H1= 6:GOSUB 64000
- 21720 RETURN
- 22000 REM
- 22001 REM COMPUTER CARD 1//CRIB CARD 1
- 22002 REM
- 22010 X1= 2:Y1= 18:W1= 4:H1= 6:GOSUB 64000
- 22020 RETURN
- 22100 REM
- 22101 REM COMPUTER CARD 2//CRIB CARD 2
- 22102 REM
- 22110 X1= 9:Y1= 18:W1= 4:H1= 6:GOSUB 64000
- 22120 RETURN
- 22200 REM
- 22201 REM COMPUTER CARD 3//CRIB CARD 3
- 22202 REM
- 22210 X1= 16:Y1= 18:W1= 5:H1= 6:GOSUB 64000
- 22220 RETURN
- 22300 REM
- 22301 REM COMPUTER CARD 4//CRIB CARD 4
- 22302 REM
- 22310 X1= 23:Y1= 18:W1= 4:H1= 6:GOSUB 64000
- 22320 RETURN
- 22400 REM
- 22401 REM COMPUTER CARD 5
- 22402 REM
- 22410 X1= 30:Y1= 18:W1= 4:H1= 6:GOSUB 64000
- 22420 RETURN
- 22500 REM
- 22501 REM COMPUTER CARD 6
- 22502 REM
- 22510 X1= 37:Y1= 18:W1= 4:H1= 6:GOSUB 64000
- 22520 RETURN
- 22600 REM
- 22601 REM DRAW BACK OF COMPUTER CARD
- 22602 REM
- 22610 COLOR 0,7:FOR B1= 1 TO 7:LOCATE Y1+ H1-0,X1
- 22620 CALL SCROLL%(SCR%,POS1%,POS2%)
- 22630 PRINT "XXXXX";
- 22640 NEXT B1
- 22670 COLOR 7,0:GOSUB 60300:RETURN
- 22700 REM
- 22701 REM ERASE PLAYED CARD - COMPUTER FIELD
- 22702 REM
- 22710 B= FN A(6)+ 1:DEF SEG =0:IF ((PEEK(&H410) AND &H30)<> &H30) THEN DEF SEG = &HB800 ELSE DEF SEG = &HB000:REM CHECK WHICH DISPLAY
- 22715 IF PEEK(2874+B*14) = 32 THEN GOTO 22710 ELSE DEF SEG = &HF00
- 22720 ON B GOSUB 22000,22100,22200,22300,22400,22500
- 22730 LOCATE Y1+ H1- 0,X1:PRINT SPC( W1+1);
- 22740 FOR B= 1 TO 7:DEF SEG=AA:CALL SCROLL%(SCR%,POS1%,POS2%):NEXT B:GOSUB 60100
- 22750 RETURN
- 23000 REM
- 23001 REM SCREEN ERASE
- 23002 REM
- 23005 POKE 21,0:X1= 41:Y1= 2:W1= 14:H1= 14:GOSUB 64000
- 23007 CALL SCROLL%(SCR%,POS1%,POS2%)
- 23010 X1= 2:Y1= 2:W1= 39:H1= 22:GOSUB 64000
- 23020 CALL SCROLL%(SCR%,POS1%,POS2%):GOSUB 60300
- 23030 POKE 21,1:RETURN
- 30000 REM FOUR CARD SCORER
- 30010 P= 0:
- 30040 REM GET THE FOUR CARDS
- 30050 HH(1)= M(I1,4):HH(2)= M(I2,4):HH(3)= M(I3,4):HH(4)= M(I4,4)
- 30055 REM CHECK FOR FLUSH
- 30060 IF M(I1,3)= M(I2,3) THEN IF M(I2,3)= M(I3,3) THEN IF M(I3,3)= M(I4,3) THEN P= P+ 4
- 30070 LOCATE 14,9:PRINT "CHECK NUMBER "CN;
- 30100 REM SORT FOUR CARDS
- 30110 FOR X= 1 TO 3:FOR Y= X+ 1 TO 4
- 30120 IF HH(X)> HH(Y) THEN TE= HH(X):HH(X)= HH(Y):HH(Y)= TE
- 30130 NEXT Y,X
- 30200 REM CHECK FOR PAIRS
- 30210 FOR X= 1 TO 3:FOR Y= X+ 1 TO 4
- 30220 IF HH(X)= HH(Y) THEN P= P+ 2
- 30230 NEXT Y,X
- 30300 REM CHECK FOR RUN
- 30310 IF HH(1)+ 1= HH(2)OR HH(2)+ 1= HH(3)OR HH(3)+ 1= HH(4) THEN 30330
- 30320 GOTO 30400
- 30330 IF HH(1)+ 1= HH(2) THEN IF HH(2)+ 1= HH(3) THEN IF HH(3)+ 1= HH(4) THEN P= P+ 4:GOTO 30400
- 30340 FOR X= 1 TO 2:FOR Y= X+ 1 TO 3:FOR Z= Y+ 1 TO 4
- 30350 IF HH(X)+ 1= HH(Y) THEN IF HH(Y)+ 1= HH(Z) THEN P= P+ 3
- 30360 NEXT Z,Y,X
- 30400 REM CLIP AT 10
- 30410 FOR X= 1 TO 4:IF HH(X)> 10 THEN HH(X)= 10
- 30420 NEXT X
- 30500 REM CHECK FOR 15'S
- 30510 SA= HH(1)+ HH(2)+ HH(3)+ HH(4):IF SA< 15 OR SA> 35 THEN 30600
- 30520 IF SA= 15 THEN P= P+ 2:GOTO 30600
- 30530 FOR X= 1 TO 2:FOR Y= X+ 1 TO 3:FOR Z= Y+ 1 TO 4
- 30540 IF HH(X)+ HH(Y)+ HH(Z)= 15 THEN P= P+ 2
- 30550 NEXT Z,Y,X
- 30560 FOR X= 1 TO 3:FOR Y= X+ 1 TO 4
- 30570 IF HH(X)+ HH(Y)= 15 THEN P= P+ 2
- 30580 NEXT Y,X
- 30600 RETURN
- 40000 '
- 40001 ' KEY INPUT ROUTINE
- 40010 LOCATE ,,1:KB$="":WHILE KB$="":KB$=INKEY$:WEND:IF KB$=CHR$(27) THEN 65000
- 40020 LOCATE ,,0:RETURN
- 40100 CHAIN "BASMENU
- 42000 REM DRAW TABLE
- 42001 '
- 42010 LOCATE 1,1:PRINT"ERRTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENOPTION";
- 42020 FOR N=2 TO 24:LOCATE N,1:PRINT"CALL";:NEXT
- 42030 FOR N=2 TO 24:LOCATE N,79:PRINT"CALL";:NEXT
- 42040 LOCATE 25,1:PRINT"ERLTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENSAVE";
- 42050 LOCATE 17,43:PRINT"ERRTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHEN<0xB5!>";
- 42060 FOR N=18 TO 24:LOCATE N,43:PRINT"CALL";:NEXT
- 42070 LOCATE 25,43:PRINT"STEP";
- 42075 LOCATE 1,57:PRINT"FN";:LOCATE 17,57:PRINT"STEP";
- 42080 FOR N=2 TO 16:LOCATE N,57:PRINT"CALL";:NEXT
- 42085 LOCATE 9,57:PRINT"PSETTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHEN<0xB5!>";
- 42090 COLOR 0,7:LOCATE 2,63:PRINT"GAME SCORE";
- 42095 LOCATE 10,62:PRINT"PLAY COMMANDS";
- 42100 LOCATE 18,48:PRINT" M E S S A G E B O A R D ";:COLOR 7,0
- 42110 LOCATE 12,58:PRINT" G=GO <cr>=GO";
- 42120 LOCATE 13,58:PRINT" <esc>=QUIT 121 WINS";
- 42130 LOCATE 14,58:PRINT" F10=Sound on/off";
- 42140 LOCATE 15,58:PRINT" Patrick Leabo";
- 42150 LOCATE 16,58:PRINT" Tucson,Az";
- 42999 RETURN
- 43000 REM
- 43010 REM TOGGLE SOUND
- 43020 REM
- 43030 IF SND = 1 THEN SND = 0 ELSE SND = 1
- 43040 RETURN
- 50009 DEF SEG=0:AA=PEEK(&H510)+PEEK(&H511)*256+(VARPTR(#1)+16)/16:RETURN
- 59999 REM
- 60000 REM SCALE SOUND
- 60005 REM
- 60010 IF SND=1 THEN PLAY "L16T120MNN=P1(VA);"
- 60020 RETURN
- 60097 REM
- 60098 REM BLEEP SOUND
- 60099 REM
- 60100 IF SND =1 THEN PLAY "L64T200N70"
- 60110 RETURN
- 60197 REM
- 60198 REM WHISTLE SOUND
- 60199 REM
- 60200 IF SND=1 THEN PLAY"T255MLL64O5CC#DD#EFF#GG#AA#BMN"
- 60210 RETURN
- 60297 '
- 60298 'CLICK
- 60299 '
- 60300 IF SND =1 THEN PLAY"L64T200N46"
- 60310 RETURN
- 60997 REM
- 64000 REM
- 64010 REM SCROLLING SUBROUTINE
- 64020 REM
- 64030 POS1%=256*(Y1-1)+X1-1:POS2%=256*(Y1+H1-1)+X1+W1:RETURN
- 65000 CHAIN "BASMENU"
-